<?php
namespace ImiApp\ApiServer\Controller;

use Imi\Redis\Redis;
use Imi\Redis\RedisManager;
use Imi\Controller\HttpController;
use Imi\Server\Route\Annotation\Action;
use Imi\Server\Route\Annotation\Controller;

/**
 * @Controller("/redis/")
 */
class RedisController extends HttpController
{
    /**
     * 写入（便捷操作）
     * 
     * @Action
     *
     * @param string $key
     * @param string $value
     * @return void
     */
    public function set(string $key, string $value)
    {
        return [
            'result'    =>  Redis::set($key, $value),
        ];
    }

    /**
     * 取出（获取对象）
     * 
     * @Action
     *
     * @param string $key
     * @return void
     */
    public function get(string $key)
    {
        $redis = RedisManager::getInstance();
        return [
            'data'  =>  $redis->get($key),
        ];
    }

    /**
     * 删除（回调方式）
     * 
     * @Action
     *
     * @param string $key
     * @return void
     */
    public function delete(string $key)
    {
        return [
            'result'    =>  Redis::use(function(\Imi\Redis\RedisHandler $redis) use($key){
                return $redis->del($key);
            }),
        ];
    }

}
